摘要:由于C#在性能方面,和C++还是有不少的差距,所以在项目中有一块是用C++的OCX控件实现,然后包括在WPF项目中。由于C++,C#属于不同的体系架构,造成了许多问题,特使是拖拽TreeViewItem到OCX控件上面,两者的渲染方式不同,OCX控件一直显示在最前面,所以拖拽的时候,看不见拖拽的Ad 阅读全文
posted @ 2018-11-27 21:58 Johar 阅读(546) 评论(0) 推荐(1) 编辑
摘要:最近项目上需要通过MVVM来控制TreeView,其中需要需要控制通过搜索来定位某个节点,正常逻辑下,首先通过需要在树上面找到该节点,然后选中该节点,并将该节点的父节点展开,这个时候需要通过MVVM来控制,需要绑定起来,只是一直没有binding上,代码如下: MVVM示例代码: 界面代码: 数据的 阅读全文
posted @ 2018-10-31 23:42 Johar 阅读(863) 评论(0) 推荐(1) 编辑
摘要:由于项目需要,需要能够定位TreeView中的点,TreeView的节点数过多的情况下,即使找到了对应的节点并选中展示了,由于不在可视区域内,给用户的感觉还是不好,因此设计如下的Behavior,来实现选中的TreeViewItem显示在可见区域: 然后在TreeView中设置一下这个依赖属性为Tr 阅读全文
posted @ 2018-10-15 17:24 Johar 阅读(523) 评论(2) 推荐(1) 编辑
摘要:项目中经常使用需要根据搜索条件查询数据,然后用卡片来展示数据。用卡片展示数据时,界面的宽度发生变化,希望显示的卡片数量也跟随变化。WrapPanel虽然也可以实现这个功能,但是将多余的部分都留在行尾,十分不美观,最好是能够将多余的宽度平分在每个ListBoxItem之间,比较美观,也符合项目需求。如 阅读全文
posted @ 2018-08-30 19:34 Johar 阅读(955) 评论(0) 推荐(0) 编辑
摘要:公司项目有个需求,UI界面支持动态平均分割界面,想了想便想到用ListBox来实现,用UniformGrid作为ListBox的ItemsPanelTemplate,通过动态改变UniformGrid的Columns属性,可以动态分割界面。具体实现如下所示: 对应的ViewModel层代码: 软件运 阅读全文
posted @ 2018-08-30 19:18 Johar 阅读(5598) 评论(0) 推荐(1) 编辑
摘要:工作中的项目,CS客户端会通过MQ接收前端设备发送的信息,之前测试的时候,由于测试的数据不大,没有进行压力测试,软件可以正常工作,随着项目现场设备数量的增加,CS客户端从MQ中订阅的数据量不断增加,最终导致,客户端界面卡死。原来的数据流程图如下: 这个数据流程,在数据不大的情况下,是没有什么问题,数 阅读全文
posted @ 2018-07-27 23:10 Johar 阅读(356) 评论(0) 推荐(0) 编辑
摘要:最近公司项目需要对接Https接口,将对接的代码整理如下: 阅读全文
posted @ 2018-05-25 23:55 Johar 阅读(4246) 评论(3) 推荐(0) 编辑
摘要:软件设计原则: 1.单一职责原则(Single Responsibility Principle) 单一职责原则的定义是:“There should never be more than one reason for a class to change.”,也就是有且仅有一个原因引起类的变更。这样可 阅读全文
posted @ 2018-05-12 11:51 Johar 阅读(2426) 评论(0) 推荐(0) 编辑
摘要:Feign是一种声明式、模块化的HTTP客户端。在SpringCloud中使用Feign,可以做到使用HTTP请求访问远程服务,就像调用本地方法一样,开发者完全无感知在进行HTTP请求调用。 1.接口定义 首先在单独的module中定义接口: @FeignClient(name ="com.joha 阅读全文
posted @ 2020-03-13 23:12 Johar 阅读(371) 评论(0) 推荐(0) 编辑
摘要:在不知道root密码情况下,修改CentOS root用户密码:sudo i passwd 阅读全文
posted @ 2020-03-13 23:10 Johar 阅读(52) 评论(0) 推荐(0) 编辑
摘要:1.上下文切换 CPU通过给每个线程分配CPU时间片来实现并发,切换过程中线程的信息从保存到再加载就是一个上下文切换。由于频繁的进行上下文切换,会消耗资源,所以并发不一定比串行快。 可以通过Lmbench3测量上下文切换的时长;可以通过vmstat测量上下文切换的次数。 减少上下文切换的方法: (1 阅读全文
posted @ 2020-02-12 23:13 Johar 阅读(108) 评论(0) 推荐(0) 编辑
摘要:互联网的快速发展,Java开发的过程或多或少会需要进行并发编程,也会遇到一些并发编程带来的各种bug。下面从并发编程的理论、并发工具类、并发设计模式、并发模型案例,记录一下自己的学习历程。 1.并发编程理论 并发编程的来源于缓存导致的可见性问题,线程切换带来的原子性问题,编译优化带来的有序性问题。J 阅读全文
posted @ 2020-02-01 23:19 Johar 阅读(67) 评论(0) 推荐(0) 编辑
摘要:Spring Boot使用一个非常特殊的PropertySource顺序,该顺序旨在允许合理地覆盖值。按以下顺序考虑属性: $HOME/.config/spring boot当devtools处于活动状态时,文件夹中的Devtools全局设置属性。 @TestPropertySource 测试中的注 阅读全文
posted @ 2019-12-06 23:29 Johar 阅读(225) 评论(0) 推荐(0) 编辑
摘要:![](https://img2018.cnblogs.com/blog/436823/201908/436823-20190817214911001-1875421566.png) ![](https://img2018.cnblogs.com/blog/436823/201908/436823-20190817214935861-1041704626.png) ![](https://im... 阅读全文
posted @ 2019-08-17 21:51 Johar 阅读(62) 评论(0) 推荐(0) 编辑
摘要:![](https://img2018.cnblogs.com/blog/436823/201908/436823-20190806003649344-790039922.png) ![](https://img2018.cnblogs.com/blog/436823/201908/436823-20190806003704766-759617848.png) ![](https://img2... 阅读全文
posted @ 2019-08-06 00:38 Johar 阅读(63) 评论(0) 推荐(0) 编辑
摘要:重构是在不改变软件可观察行为的前提下改善其内部结构 书中的案例如下: 以一个影片出租店用的程序,计算每位顾客的消费金额并打印详单。输入条件:顾客租了那些影片、租期多长;输出:费用根据租赁时间和影片类型计算,积分根据是否是新片而不同。影片分为三类:普通片、儿童片、新片: 优化之后整体布局如下: 关键部 阅读全文
posted @ 2019-07-31 23:23 Johar 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2019-07-31 00:22 Johar 阅读(45) 评论(0) 推荐(0) 编辑
摘要:最近工作中遇到pg数据库data文件夹大小达到32G,大致的排查流程如下: 1.首先查看是哪个文件或者那些文件比较大; 2.根据文件的名称找到对应的数据表a; 3.确认数据表a中数据实际上只有3000条左右,数据量没有这么大; 4.经过对实际业务场景排查,这个表a是用来记录数据库表数据变化的表,其他 阅读全文
posted @ 2019-07-14 23:13 Johar 阅读(248) 评论(0) 推荐(0) 编辑