互联网大厂项目开源地址索引
含部分非纯互联网大厂
国外
- 微软Microsoft
- 谷歌Google
- 脸书Facebook
- 亚马逊Amazon
- Apache
- GitHub
国内
-
百度Baidu
-
腾讯Tencent
-
阿里巴巴Alibaba
-
蚂蚁金服
-
饿了么
-
携程
-
美团
-
字节跳动
-
滴滴
-
华为
-
小米
-
bilibili
-
京东
-
奇虎360
-
网易
-
有赞
-
豆瓣
掘:奇葩史
含部分非纯互联网大厂
百度Baidu
腾讯Tencent
阿里巴巴Alibaba
蚂蚁金服
饿了么
携程
美团
字节跳动
滴滴
华为
小米
bilibili
京东
奇虎360
网易
有赞
豆瓣
掘:奇葩史
vs2015开发wpf程序,程序已编译,即文件已经保存,电脑突然断电,一个cs文件内容被清空,但大小与原来的一样。
有很多人遇到此类问题,但,回答的人都在扯,都在说没保存的问题,什么要记得ctrl+s,这帮都是问题都看不清的自以为是的那啥。看得那疼。。。。
【据我了解,磁盘恢复就相当于,一般的删除文件只是把指向这个文件的索引删除,但那个文件其实还在,只是系统没有索引指向它,而恢复工具,就是从磁盘上找到这块内容,重新给他加上索引】
例如:文件在磁盘上存储的是010101,一般的删除,磁盘上还是010101,所以恢复工具找到它就可以恢复,而如果被覆盖为111101 or 低格为000000,那谁都木有办法恢复了。
3、 鉴于上面提到的文本文件恢复工具,自己决定看下损坏文件的内容,利用16进制查看工具Hex Workshop Hex Editor查看文件内容,发现内容被全部置为0,即内容是真的清空了 —— 一开始yy想法是:要是单纯某些字节损坏,或许修改某些字节,还可能恢复。
4、 最终解决方案:
5、 仍然存在的问题:开发中,常常因为尝试步骤比较多,所以会有大量的注释代码,但这些临时注释代码并不是无用的,而反编译的代码中不会有注释代码,所以,最后获得的代码,仍然有缺失,无法找回。
故,为了以后再次遇到此类情况,及时求解:大家有啥好方法,可以恢复这些损坏的文件,拿出来一起分享下。
or 聊聊是什么机制导致断电将文件编码全置0
or 吐槽下自己遇到的类似经历
扯:奇葩史
具体为啥会有这种问题不清楚,解决方案参考:https://bbs.csdn.net/topics/390262033
1 | <DataTemplate x:Key="DataTemplate3"> |
解:奇葩史
注意:
- 本文方法基础是WindowChrome,而WindowChrome在
.NET Framework 4.5之后才集成发布的。见:WindowChrome Class- 在
.NET Framework 4.0中使用WindowChrome,需要安装Ribbon来支持WindowChrome- 目前官方文档的内容较为陈旧(但仍有参考价值),其中提到了
SystemParameters2,这个应该是Ribbon里的东西,4.5想用可以安装Xceed.Wpf.AvalonDock库,这里面有现成的Microsoft.Windows.Shell.SystemParameters2实现——当然,自己不怕麻烦,可以自己实现来获取要用的系统变量。(一般用不着,4.5中SystemParameters添加了许多系统变量的实现)
注意:控件模板中的定义:
- 1、最外层Border背景无颜色,否则会覆盖标题栏,看不到系统按钮。
- 2、内部布局定义,使用Grid隔出30的标题栏高度,也可以直接对ContentPresenter设置Margin【主要是为了让顶部显示出标题栏】。
1 | <Style x:Key="WindowStyle1" TargetType="{x:Type Window}"> |
存在的问题: 最大化边框问题 —— 会有部分溢出。
根据观察,这个溢出宽度应该是
8,此值的来源:(SystemParameters.MaximizedPrimaryScreenWidth - SystemParameters.WorkArea.Width)/2,高度也可以这样计算。
不管使用哪种方法,最大化时,系统的标题栏高度都发生了变化,故,需要重新设置模板中定义的标题栏高度。
1 | <ControlTemplate TargetType="{x:Type Window}"> |
至此,都是系统标题栏和我们自定义内容组合使用,但这样总有些边边角角要修正,下面就完全自定义标题栏
GlassFrameThickness设置为0WindowChrome.IsHitTestVisibleInChrome="True"如果不设置
WindowChrome.IsHitTestVisibleInChrome,则由于我们之前设置CaptionHeight,则这个区域内,按钮将失效。
但是,也不能将整个标题栏布局设置这个属性,那样会完全覆盖系统标题栏的操作,如拖动效果,即CaptionHeight设置的那个区域。
1 | <!--样式定义--> |
1 | <!--定义标题栏--> |
1 | //标题栏按钮功能实现 |
关联了解:
如果你平时也使用Visual Studio Code【VSCode】,文中的第一步和第三步,在vscode的设置中有对应效果:
- 第一步 —— 将vscode用户设置中Title Bar Style值设为native;
- 第三步 —— 将vscode用户设置中Title Bar Style值设为custom。
解:奇葩史
落后要挨打,个人以前一直局限于老旧方式实现窗体处理,没有跟进WPF技术改进,在此,非常感谢@vbfool的提醒。【之前说周末搞出来,自己这几周浪了,没研究。今天趁着别人双11买买买,咱就撸撸代码】
WindowStyle=None时,窗口最大化,不显示任务栏 —— 即窗体是全屏效果。1、 设置窗体相关属性:WindowStyle="None" AllowsTransparency="True" Background="Transparent" ResizeMode="CanMinimize"
窗体需要支持透明,并将窗体设置为透明;设置ResizeMode,否则最大化时,边框会有影响。
2、 添加窗体最大化/还原代码如下:
1 | double normaltop; |
3、添加任务栏变化处理
注意:此节实现仅适用于.Net Framework 4.5及以上。因为4.0及以前的版本中不包含StaticPropertyChanged事件。
不过可以通过WndProc来自己实现,其中会有一个问题:利用WndProc来监听,结果是比较实时的,而SystemParameters中的值,实时性可能会跟不上,从而获取到的值仍然是旧的。
对此有两种解决方案:
- 1、添加一个Timer 或者 直接Sleep,等待一下在SystemParameters的值【此法相对简单,但无法完全保证有效,毕竟SystemParameters中值更新的时间,还是要看.Net Framework】;
- 2、利用Windows API读取系统值,用方法SystemParametersInfo获取SPI_GETWORKAREA【微软官方其实就是用这个获取的,这样比我下面的运行效率还要高些】
另外:下面的方法可能会有系统兼容性问题,我在Windows 10上是通过的,但在Windows 8.1上,边界存在问题【不确定是不是Framework在系统上有bug】
注册事件:SystemParameters.StaticPropertyChanged += SystemParameters_StaticPropertyChanged;
添加如下代码:
1 | private void SystemParameters_StaticPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) |
解:奇葩史