自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 收藏
  • 关注

原创 windows快捷方式图标变成空白

今天突然有客户说应用程序快捷方式图标变成了空白,就研究了一下,网上找了一下很多都说是什么图标缓存有问题,试过之后发现并不能解决问题。然后发现用户的文件上都一把黄色的小锁的标志,查了一下说是文件属性里面设置加密之后就会这要,于是就猜测有没有可能是这个导致。把这个勾选去掉,再重新生成快捷方式之后就正常了。设置文件夹加密,如果勾选就去掉。

2023-11-18 14:57:02 197

原创 cefsharp 93.1.140 如何在js中暴露c#类

cefsharp93如何暴露c#类

2023-11-10 17:40:36 419

原创 android8.1串口通讯读取不到数据

最近在做工业平板通过串口通讯读取地磅重量数据,使用的是google开源的串口通讯库,之前在android5.1上跑的没啥问题,最近这批新平板装的是android8.1,装上程序后发现就是读取不了数据,想了各种办法都不行,以为是底层的通讯库有问题,,获取文件流可读字段一直为0导致的,之前在android5.1上这个方法是可以获取到缓存中的可读字段的,在android8.1上这个方法获取到的一直是0。

2023-07-13 14:48:02 349 1

原创 解决springboot图片上传失败,临时目录找不到问题

上传图片报临时目录不存在,检查后发现。springboot的jar包在启动时,会在系统的/tmp/tomcat.*目录下建立一个临时文件目录,用来存储一些缓存数据包括上传的图片,文件等。而centos系统会定时删除/tmp目录下去的文件和文件夹。解决方案如下:打开这个配置文件vim /usr/lib/tmpfiles.d/tmp.conf添加x /tmp/tomcat.*这样centos系统就不会清理这个临时目录了...

2021-12-21 17:12:39 1067

原创 如何使用nginx的alias方式发布多个前端项目

最近使用uni-app写了一个前端H5的小程序,然后准备发布到服务器上,这时候就想到了之前用nginx发布过一个,但是,由于本人比较懒不想再装一个nginx,于是就想能不能用一个nginx发布多个项目,一查还真可以,研究了一下发现有好几种方法,就选了最简单的一种,alias的方式,现在贴上配置信息:要在你的nginx目录下,新建一个test目录,把前端项目资源包放进去,访问时只需要在你的请求地址后面加上test就可以了,例如:http://xxxx:80/test注意事项由于我使用的时uni-app

2021-09-30 15:32:57 752

原创 postgresql序列导致的错误(duplicate key value violates unique constraint)

最近使用postgres数据库遇到一个问题,更新数据的时候报duplicate key value violates unique constraint,查了一下网上说的序列的自增Id和设置的最大ID不匹配,才想到是由于,之前给客户导数据的时候把id也导进去了,缺没有把序列的值改成导完之后的最大值导致数据库后面有两条id一样的记录,才导致根据id更新数据会查到两条数据,加上我正好把一个字段设成了主键,更新的时候由于主键必须唯一,导致更新直接抛异常了。导数据或者导数据库之后,如果用到了序列一定要把序列的值更

2020-10-30 23:29:34 6016

原创 如何使用WinRAR的自解压功能做一个简单的安装包

WinRAR的自解压功能会打包出来一个.exe的压缩包,双击之后就会自动解压,今天突发奇想,那是不是可以用这个功能来实现windows平台的程序打包咧?想到就做,百度了一下果然聪明人就是多。我要实现的功能是:打包之后,双击运行解压到当前目录,并且生成一个桌面快捷方式。直接上图:1.右键选择添加到压缩软件,选中自解压选项2.高级->自解压选项3.选中在当前文件夹创建 这边有一点要注意,一进来可能无法选中在当前文件夹创建,只需要在解压路径中随便输入一些,就可以选中了,选中之后再把解压路径中的路

2020-10-18 16:50:35 1444

原创 设计模式学习心得

评判代码好坏的标准易读,易扩展 好的代码是让别人能够很容易就看懂,只有在看懂代码的基础上,才能进行代码的扩展和维护。所以我觉得易读性是代码好坏的最重要的标准。其次就是易扩展,易读是基础,易扩展就是更上一层了,面对需求的变动如何写出易扩展的代码,是很考验一个程序员的代码设计能力的。如何写出易读的代码要想写出易读的代码,1.代码的结构设计要清晰,模块划分要合理,这样别人一看就对整个项目的结构有了一个大概的了解。2.少用编程语言中的一些很新,或者很冷门的写法,多用哪些常用的写法,这样能够照顾到不同水

2020-09-10 14:33:31 307

原创 android 带固定文本EditText

话不多说,直接上源码:public class FixedEditText extends AppCompatEditText { private String fixedText; private int fixedTextGravity; private int leftPadding; private int rightPadding; private int fixedTextWidth; private Paint fixedTextPaint;

2020-09-10 10:48:03 929

原创 cefsharp 84.4.10 如何在js中暴露c#类

从cefsharp79版本开始,旧的RegisterJsObject方法被删除了。也就是说想使用79以后的版本,就必须更新js暴露c#对象的方法了。话不多说直接上代码:BindingOptions bindingOption = new BindingOptions { CamelCaseJavascriptNames = false, Binder = BindingOptions.DefaultBinder.Binder };CWBrowser.JavascriptObjectReposit

2020-08-28 15:39:56 1058 1

原创 记一个主线程sleep导致子线程卡住事件

话不多说直接上代码,主线程代码:public void Stop() { isAutoRead = false; while (isRunning) Thread.Sleep(100); }子线程代码:private void LoopReadCard() { isRunning = true; CefCardReader r

2020-08-26 13:53:28 1924

原创 cefsharp的getframe()方法获取特定名词的iframe页面失败的原因?

首先介绍一下,项目前端框架使用的layui。使用layui.open{type:2,success:{ //修改iframe标签的name属性}打开一个iframe弹窗,然后在success回调中修改iframe的name属性。这个时候发现通过cefsharp的getframe()方法获取这个对应name的iframe页获取不到,调试了一下,发现是cefsharp中的name没改掉,也就是前端页面虽然改了,但是,cefsharp的内核中这个iframe所对应的IFrame对象的name属性并没有改变,这

2020-08-17 11:03:45 2428

原创 android在Module中引用第三方的jar包和.so包,运行App时提示找不到.so文件的解决方法

先上报错截图这个错误是说找不到.so文件。然后我就打开了apk安装包看了一下,发现根本没有libs目录。也没有找到module中引入的.so文件。最后我突然想到,是不是我引入的jar包的方式有问题,我们正常导入用的是implementation,然后我改成了api引入这个时候我再打包生成,发现apk文件中已经有了libs目录,也找到了module中引入的.so文件。这是在运行程序发现报下面的错找不到类,然后发现是有一个jar包没有添加到项目中。到此所有问题全部解决。...

2020-08-14 10:34:58 1929

原创 c#中已经有了interface为什么还要搞一个抽象类?

在c#中,抽象类,接口的主要作用是,对代码进行抽象化,让别人在使用我们的代码的时候不需要关心具体的实现,而只需要关心这个函数实现了什么功能就够了。当然如果仅仅是为了实现这个功能,用函数封装就够了,根本没必要用到抽象类和interface。那为什么还要用到抽象类和函数封装咧?这里面就涉及到一个面向对象编程的另一个特性多态 ,什么叫多态咧,举个非常经典例子,动物,有天上飞的,水里游的,地上走的。但是,动物有那么多我们为每一种动物都建一个类的话,肯定会涉及到很多重复的代码,这时候我们就在想有没有办法减少这些重复

2020-07-30 12:28:54 496

原创 css中的em

em 相对大小,是一个相对长度单位。相对应用在字体元素上当前尺寸。并不是像px一样的绝对字体尺寸。1em 不一定等于 16px,1em可能是32px,也可能是48px。这个取决于如果你不给这个标签设font-size,那它的字体大小是多少,如果是16px,那么1em就等于16px,如果是32px那1em就等于32px。它是一个相对的长度单位。...

2020-07-07 17:13:48 167

原创 在打印服务器中新增纸张规格后,在打印机首选项中的自定义纸张中看不到的原因

最近在研究lodop这个web打印控件,在使用的过程中因为客户需要两种纸张规格进行打印,为了简化打印过程,通过lodpo的LODOP.SET_PRINT_PAGESIZE(1, 2410, 1400, "CreateCustomPage"); LODOP.ADD_PRINT_HTM(10, 0, "100%", "100%", strFormHtml);来设置一个自定义的纸张规格,这里面遇到一个问题,一开始我是这样设置的LODOP.SET_PRINT_PAGESIZE(1, 2800, 1400, "C

2020-06-10 11:35:21 6996

原创 从安卓Handler到java关键字volatile

安卓中线程间通信是通过Handler来进行的。而Handler的原理是Loop在维持一个全局静态的ThreadLocal对象,ThreadLocal对象里面通过以线程对象为key,Loop对象为值来存储每个线程自己的Loop.在每个线程new一个Handler的之前都要调用Looper.prepare();就是为了给当前线程创建自己的Loop,而在创建Handler的时候需要获取到当前线程的Loop,这就是为什么要先调用Looper.prepare()的原因。而线程的Loop对象里面又维护一个messag

2020-06-05 17:52:17 186

原创 c# abstract virtual new 修饰的方法的调用

public abstract class AbstractFactory { public new string GetType() { return "AbstractFactory"; } public virtual string GetName() { return "AbstractFactory"; } public str

2020-05-27 21:57:58 229

原创 数据结构-跳表

跳表是一种基于链表的数据结构,通过构建多级索来优化链表查找数据的时间复杂度,链表数据查找的时间复杂度是O(n),跳表的时间复杂度是O(logn).跳表在数据的插入,删除,查找,尤其是数据的区间查询都特别有优势。相对于红黑树,跳表在区间查询方面更有优势跳表通过构建多级索引,进行区间查找来优化链表查询时间复杂度高的问题。使用空间换时间的办法来优化查询效率。...

2020-05-12 10:40:54 142

原创 android studio 单元测试运行一直编译不通过报android studio test java.lang.NullPointerException

今天在android studio中新增了一个纯java代码的test单元测试,结果运行的时候一直编译失败,查看报错信息android studio test java.lang.NullPointerException百度没有查到结果,没办法只能google了,最后在stackoverflow上找到了解决办法。链接解决方案很简单,就是把你项目原先使用的android sdk删除掉然后重新...

2020-05-06 17:31:58 768

原创 时间复杂度和空间复杂度计算

常用的几种复杂度级别(复杂度从低到高排序):O(1) 常数级O(logn) 对数级O(n) 线性级O(nlogn) 线性对数级O(n2 n3 nk) k次方级O(n!) 阶乘级O(2n) 指数级时间复杂度全称渐进时间复杂度,表示算法的运行时间与数据规模之间的增长关系空间复杂度全称渐进空间复杂度,表示算法的存储空间与数据规模之间的增长关系O(1)int a = 0O(...

2020-04-29 16:37:24 667

原创 android布局界面点击事件在控件间的传递路径

android的界面触摸事件分为三种,action_down,action_move,action_up这几个事件。这里我们主要说一下action_down事件的传递。首先android的事件是从父控件->子空间,再从子控件->父控件。U型传递。android的控件分为两种viewgroup和view;viewgroup处理事件时有三个方法,dispatchTouchEvent、...

2020-04-17 18:04:26 635

原创 android 混淆规则

-keep class com.xxx.**-keep class com.xxx.*一颗星表示只保持该包下的类名,而子包下的类名还是会被混淆.两颗星表示把本包和所含子包下的类名都保持注意:用以上方法保持类后,你会发现类名虽然未混淆,但里面的具体方法和变量命名还是变了,这时如果既想保持类名,又想保持里面的内容不被混淆,我们就需要以下方法了-keep class com.xxx.*{*;...

2020-03-24 10:25:21 518

原创 Android debug database一直打不开数据库的问题

1.问题描述最近要在新项目中添加数据库表,然后就准备集成Android debug database 来调试数据库,然后就出现了一个问题,首先没有报错,项目都是正常运行的,但是我在浏览器访问数据库连接的时候,总是跳转到另外一个页面,无法访问数据库。2.解决方案然后整个人就有点懵逼,最后找了一,两天才发现是资源目录的问题,因为我自己的项目中也有assets文件夹,而Android debug ...

2019-12-24 15:38:27 918

原创 JS学习-异常篇

js有6种原生异常类型。1.SyntaxError对象是解析代码时发生的语法错误2.ReferenceError对象是引用一个不存在的变量时发生的错误。另一种触发场景是,将一个值分配给无法分配的对象,比如对函数的运行结果或者this赋值。3.RangeError对象是一个值超出有效范围时发生的错误。主要有几种情况,一是数组长度为负数,二是Number对象的方法参数超出范围,以及函数堆栈超过最...

2019-11-25 15:42:05 76

原创 JS学习-运算符篇

1.取余运算符 % :-5%2=-1, 5%-2=1;符号取决于前一位数的正负。2.指数运算符** : 232=512 ;指数运算符是右结合,232===2**93.加法运算符+ : 有相加和连接两种重载运算,1+1=2;1+ ‘1’=‘11’;对于对象相加,先执行对象的valueof()方法,再执行tostring()方法直到将object转为基础的三种类型。var obj = { v...

2019-11-20 11:35:14 382

原创 JS学习-数据类型篇

ES5标准中JS主要有6种数据类型:1.数值(number):整数和小数(如123,3.14)2.字符串(string):文本(如“hello”)3.布尔类型(boolean):true和false4.undefined:表示未定仪或不存在的值5.null:表示空6.对象(object):表示一系列值得集合number,string, boolean是最基础的数据类型,不能再拆分了。...

2019-11-20 10:56:25 112

原创 c#使用AForge库调用usb摄像头进行拍照

最近由于老项目中使用的AForge.net库调用摄像头拍照,使用起来会出现卡慢的问题。于是决定对这块进行一下优化。首先我们需要在项目中引入如图所示的几个库接下来我们需要在工具箱中添加AForge.Controls对应的控件。一定要使用VideoSourcePlayer控件来播放视频源,这样才能避免长时间使用摄像头导致的卡慢问题.我一开始使用的是抓取视频源的帧数据绘制到一个pictureb...

2019-11-19 10:53:17 2322

原创 观银河补习班有感2019-10-04

这是一部关于父与子,关于教育的电影。全篇给我感受最深的地方是,不太记得那个女老师叫啥了。但是她说“很好,那个孩子的眼中开始有光了。”我觉得教育的目的不止是让孩子上一个大学就够了。从小父母跟我说的就是你的目标就是考上大学,考上大学之后你要干什么,要知道考上大学之后你的人生其实才刚刚开始,连四分之一都没到,而我已经完成了我从小到大的人生目标。然后我要干啥,我以后要成为一个什么样的人,没人告诉我。也没...

2019-10-04 22:01:55 334

原创 git stash命令的使用

今天学习了一个git的新命令stash,这个命令的作用和push差不多,不过一个是把代码提交到服务器上,一个是提交到本地的一个分支。具体的使用首先在项目上单击右键,找到stash changes命令,单击后会弹出在stash message中输入标识信息,方便你下次找到它。然后点击ok。成功之后我们可以在stash list中查看所有的记录,然后我们选中我们要还原的记录右键,选择stash...

2019-09-18 17:50:17 467

原创 Android活动篇-AppCompatActivity

android中所有的活动都要继承于Activity,而AppCompatActivity是Activtiy的子类。AppCompatActivity是一种向下兼容的Activity,它可以将Activtiy在各个系统版本增加的特性和功能最低兼容到Android2.1系统。...

2019-08-15 10:39:11 950

原创 windows自定义控件开发-加载框

windows自带的加载控件已经不能满足我的要求了,觉得太丑,于是决定自己写一个。先上效果图。下面是源码public partial class FengLoadingCircle : Control { #region 常数 private const double NumberOfDegreesInCircle = 360; pr...

2019-08-13 15:51:01 683

原创 windows自定义控件开发-圆角TextBox

winform中的TextBox控件没有Radius属性,无法设置文本款为圆角。然后就想自己写一个自定义的圆角控件。一开始想,既然要写那就从头开始写,于是就开始写了起来。刚开始一切都很顺利,等我把界面画完之后,老天跟我开了一个大玩笑,我发现直接从Control类继承写不下去了,太复杂我要去研究一下源码,然后发现源码中的TextBox是一个mfc控件。好吧,这么麻烦,算了。换个思路,后来我就想我只需...

2019-08-09 17:37:36 4149 1

原创 winform自定义控件开发-前言

最近出于美化项目UI的需求,本来想用DEVexpress的控件库。但是下载下来一看有点复杂而且还要付费。想了一下还是自己写吧!虽然之前也写过一些自定义控件,但是都是把windows现有的控件组合一下的用户控件。从Control继承的完全自己绘制的控件了解的就不是很深了。就找了一个最简单的label先来练练手。首先,总结一下基础知识,winform的所有界面控件包括窗体控件都是派生于Control...

2019-08-07 15:26:37 929

原创 如何解决vs制作的安装包生成的桌面快捷方式打开文件位置不正确的问题

之前在使用vs制作安装包的过程中发现一个问题,就是这个安装包生成的桌面快捷方式,打开文件位置功能不能真正定位到程序的安装目录。最近有时间就想解决这个问题,查了一些资料,看网上说要使用一个工具修改安装包才能解决,就觉得太麻烦了。最后又查了一下看到了另一个解决方案,只需要在制作安装包时多生成一个桌面快捷方式就可以解决这个问题。点击Shortcuts,右键Desktop,选择New Shor...

2019-07-18 10:07:15 2253

原创 如何在浏览器中打开windows应用程序

最近由于项目需要实现一个类似迅雷从浏览器触发下载链接的功能,于是研究了一下怎么从浏览器中打开本地应用(仅限windows平台)。首先上网查了一些资料,然后发现这个功能的实现主要跟注册表有关系。需要在制作程序安装包的时候,写入一些注册表信息。我首先是在注册表中找到迅雷的注册表,如下所示:Windows Registry Editor Version 5.00[HKEY_CLASSES_ROO...

2019-07-18 09:54:11 9754

原创 编译Cefsharp63.0.3版本项目源码

工具和环境IDE:VS2013.netFramework:4.5.2本来想用最新版本的Cefsharp,但是,最新版本的编译至少需要VS2015,而我的电脑上安装的是VS2013,重新安装VS2015太麻烦,于是我就选择了63.0.3这个版本。这个版本需要的编译和构建环境可以在github的cefsharp项目的主页上看到可以看到从63之后就需要VS2015了。我们先从github上把...

2019-06-25 16:12:38 2384

原创 使用SetPrinter修改打印机名称

最近项目需要修改打印机名称public static bool SetPrinterName(string OldName, string newName) { IntPtr hPrinter; PrintAPI.structPrinterDefaults defaults = new PrintAPI.structPrinterD...

2019-06-06 16:37:39 2757

原创 使用win32API获取打印机是否处于脱机状态

最近在写一个打印服务器的项目,需要获取本地打印机是否脱机的状态,上网查了一下,都是使用的下面的代码 public static int GetPrinterStatusInt(string PrinterName) { int intRet = 0; IntPtr hPrinter; PrintAPI.str...

2019-06-05 11:17:10 3044 3

原创 修改RadioButton样式

android的默认光标颜色是红色的我不太喜欢,就修改了一下,程序主题的colorAccent的颜色,结果光标颜色是改了可是没想到RadioButton选中的颜色也改了,这个就很坑了。然后就是试各种方法去设置RadioButton的颜色,主要是为了偷懒,像写自定义控件这种比较麻烦的都被我排除了,结果还真被我找到了一个很简单的方法,修改一下RadioButton的主题样式就可以了。具体看这个Radi...

2019-05-28 14:02:54 1252

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除