- 博客(40)
- 资源 (65)
- 收藏
- 关注
原创 .NET IL代码 解读
IL_0007: ldloc.0 // 取Record Frame中位置为0的元素(V_0)的值("i"的值)并压入栈中 (相当于Copy一份值Call Stack中V_0的值。IL_0008: ldloc.1 // 取Record Frame中位置为1的元素(V_1)的值("j"的值)并压入栈中 (同上)IL_000a: ldloc.2 // 取出Record Frame中位置为2的元素(V_2)的值("k"的值)并压入栈中。Ldloca.S:将位于特定索引处的局部变量的地址加载到计算堆栈上(短格式)。
2024-01-13 13:03:32
570
原创 .NET 形参和实参的区别
全称为"实际参数"是在调用时传递给函数的参数. 实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。5.当形参和实参不是指针类型时,在该函数运行时,形参和实参是不同的变量,他们在内存中位于不同的位置,形参将实参的内容复制一份,在该函数运行结束的时候形参被释放,而实参内容不会改变。而如果函数的参数是指针类型变量,在调用该函数的过程中,传给函数的是实参的地址,在函数体内部使用的也是实参的地址,即使用的就是实参本身。
2024-01-07 09:38:39
403
原创 .NET asp.net core Filter
具有较低Order值的过滤器将在具有较高Order值的过滤器之前执行前置方法;具有较低Order值的过滤器将在具有较高Order值的过滤器之后执行后置方法。授权过滤器 在过滤器管道中第一个执行,通常用于验证当前请求的合法性,不合法后面的管道会直接跳过。其中OnActionExecuting在所有过滤器之前调用,OnActionExecuted在所有过滤器之后调用。当管道的某个阶段存在多个过滤器时,过滤器执行的默认顺序由作用域确定:全局过滤器优先于控制器过滤器,控制器过滤器优先于Action方法过滤器。
2024-01-07 09:37:24
409
原创 .NET 建议不使用:静态帮助类
使用帮助类,只需要一步代码,即完成 帮助类的 依赖与注入,把问题包装起来自己处理,不给调用者带来困扰!改用 接口+实现 IOC 方式 使用 扩展帮助方法。然后,将扩展方法 在 实际使用项目时,增加扩展类。
2024-01-05 09:21:05
397
原创 .NET MediatR 之 CQRS
CQRS的全称是:“Command and Query Responsibility Segregation”,直译过来就是命令与查询责任分离,可以通俗的理解为读写分离。IRequest 的消息名称以 Query 为结尾的是查询,其对应的 Handler 执行「读」数据。2、「优化的数据架构」: 读取端可使用针对查询优化的架构,写入端可使用针对更新优化的架构。CQRS 使用命令来更新数据,使用查询来读取数据,将读取和写入 分离到不同的 模型中。2、命令可以放置在队列中进行异步处理,而不是同步处理。
2024-01-05 09:19:25
501
原创 Ambar: Document Search Engine
Ambar2.0仅支持本地fs爬网,如果您需要爬网FTP位置的SMB共享,只需使用标准的linux工具进行装载即可。爬网是自动的,不需要时间表,因为爬网程序监视文件系统事件并自动处理新的、更改的和删除的文件。MS Office文档(Word、Excel、Powerpoint、Visio、Publisher)Ambar是一个开源的文档搜索引擎,具有自动抓取、OCR、标记和即时全文搜索功能。OCR语言:Eng、Rus、Ita、Deu、Fra、Spa、Pl、Nld。2、对您的文档和图像内容执行类似谷歌的搜索。
2024-01-01 12:13:04
479
原创 分布式 秒杀活动
当服务 A 依赖服务 B 时,正常情况下服务 A 会直接通过 RPC 调用服务 B 的接口,当服务 A 调用的流量可控,且服务 B 的 TP99 和 QPS 能满足调用时,这是最简单直接的调用方式,没什么问题,目前大部分的微服务间调用也都是这样做的。而有了完善的用户画像,那些黑产用户,在风控的照妖镜下,自然也就无处遁形了。在秒杀场景下,这些信息是否有必要就需要视情况而定了,秒杀系统要求尽量简单,交互越少,数据越小,链路越短,离用户越近,响应就越快,因此非核心的功能在秒杀场景下都是可以降级的。
2024-01-01 12:12:15
1488
原创 .NET 分布式 CAP理论
分区指的是在整个分布式系统中,因为各种网络原因,系统被分隔成多个单独的部分,它不仅包含我们通常说的网络分区,也包含因为网络丢包导致的网络不通的情况。并且,这里说的因为网络丢包导致网络不通的情形,还包含节点宕机的场景,由于系统的其他机器不知道某个节点宕机了,只知道与宕机节点的网络是不通的,所以当节点宕机发生时,其他节点发往宕机节点的包也将丢失。CAP 理论对可用性的定义,指的是要求系统提供的服务必须处于 100% 可用的状态,对于用户的每一个操作请求,系统总能够在有限的时间内返回结果。
2023-12-30 14:43:07
476
原创 .NET CAP 理论
如果我们选择了 CA 而放弃了 P,那么当发生分区现象时,为了保证 C,系统需要禁止写入,当有写入请求时,系统返回 error(例如,当前系统不允许写入),这又和 A 冲突了,因为 A 要求返回 no error 和 no timeout。强调 client 读操作能够获取最新的写结果就没有问题,因为事务在执行过程中,client 是无法读取到未提交的数据的,只有等到事务提交后,client 才能读取到事务写入的数据,而如果事务失败则会进行回滚,client 也不会读取到事务中间写入的数据。
2023-12-30 14:42:31
472
原创 CAP 学习和思考
订单模块的下单付款扣减库存操作是整个系统的核心,我觉得CA都需要保证,在极端情况下牺牲P是可以的。促销是短时间的数据不一致,结果就是优惠信息看不到,但是已有的优惠要保证可用,而且优惠可以提前预计算,所以可以保证AP现在大部分的电商网站对于支付这一块是独立的系统,或者使用第三方的支付宝,微信。发生“网络分区”时,系统中多个节点的数据一定是不一致的,但是可以选择对用户表现出「一致性」,代价是牺牲「可用性」:将未能同步得到新数据的部分节点置为“不可用状态”,访问到这些节点的用户显然感知到系统是不可用的。
2023-12-30 14:41:30
404
原创 CAP 细节
在实际设计过程中,每个系统不可能只处理一种数据,而是包含多种类型的数据,有的数据必须选择 CP,有的数据必须选择 AP。而如果我们做设计时,从整个系统的角度去选择 CP 还是 AP,就会发现顾此失彼,无论怎么做都是有问题的。
2023-12-30 14:40:32
968
原创 IDEA 设置
git rm -rf --cached 文件夹名或者文件名称。(4)添加.gitignore仍然无效解决方法。(1)在idea里搜索安装.ignore插件。(2)项目根目录创建.gitignore文件。(3)配置相应的过滤文件或文件夹。
2023-12-30 10:17:42
401
原创 IDEA 常用插件列表
详细使用文档,参考:https://plugins.jetbrains.com/plugin/8286-sequencediagram。详细使用文档,参考:https://plugins.jetbrains.com/plugin/9686-pojo-to-json。IDEA 插件地址:https://plugins.jetbrains.com/plugin/10046-alibaba-java-coding-guidelines。领域对象转JSON工具:POJO to JSON。
2023-12-30 10:17:03
429
原创 Java ElasticSearch 教程
Kibana 入门教程:https://www.tizi365.com/archives/780.html。Logstash 教程:https://www.tizi365.com/archives/717.html。ElasticSearch:7.17官方文档。
2023-12-30 10:16:03
415
原创 .NET 面向对象 之 封装
例如,如果对client的用户姓名由原来的简单name来标识,换成以firstName和secondName来实现,如果不是属性封装了字段而带来的隐藏内部细节的特点,那么我们在代码中就要拼命地替换原来xiaoWang.name这样的实现了。(1)字段通常定义为private,属性通常实现为public,而方法在内部实现为private,对外部实现为public,从而保证对内部数据的可靠性读写控制,保护了数据的安全和可靠,同时又提供了与外部接口的有效交互。因此,对外交互的方法,通常实现为public。
2023-12-29 12:10:09
451
原创 .NET C#面向对象 之 继承
类似于字段的创建过程,方法表的创建也是父类在先子类在后,原因是显而易见的,类Chicken生成方法列表时,首先将Bird的所有虚方法复制一份,然后和Chicken本身的方法列表做对比,如果有重写的虚方法则以子类方法覆盖同名的父类方法,同时添加子类的新方法,从而创建完成Chicken的方法列表。我们可以在编译器中用单步执行的方法来大致了解其分配的过程和顺序,因此,对象的创建过程是按照顺序完成了对整个父类及其本身字段的内存创建,并且字段的存储顺序是由上到下排列,最高层类的字段排在最前面。
2023-12-29 12:08:29
968
原创 .NET 中的继承规则
除此以外的其它成员,不论对它们定义了怎样的访问方式,都能被继承。基类中成员的访问方式只能决定派生类能否访问它们。如果C从B中派生,B又从A中派生,那么C不仅继承了B中声明的成员,同样也继承了A中的成员。4、派生类如果定义了与继承而来的成员同名的新成员,就可以覆盖已继承的成员。但这并不因为这派生类删除了这些成员,只是不能再访问这些成员。5、类可以定义虚方法、虚属性以及虚索引指示器,它的派生类能够重载这些成员,从而实现类可以展示出多态性。派生类可以添加新的成员,但不能除去已经继承的成员的定义。
2023-12-29 12:06:20
501
原创 .NET 中的抽象类和抽象方法
如果一个类不与具体的事物相联系,而只是表达一种抽象的概念,仅仅是作为其派生类的一个基类,这样的类就是抽象类,在抽象类中声明方法时,如果加上abstract时就是抽象方法。4:抽象类中的成员可以私有的(只要不是抽象的)、受保护的、内部的或受保护的内部成员,但接口中的成员必须是公共的。1:它们的派生类只能继承一个基类,即只能继承一个抽象类,但是可以继承多个接口。2:抽象类中可以包含抽象成员,但非抽象类中不可以。2:抽象类中可以定义成员的实现,但接口中不可以。1:抽象方法必须声明在抽象类中。
2023-12-29 12:04:26
581
原创 .NET 常用知识小结
结构是值类型,只能继承接口,不能被继承,没有默认的构造函数,可以创建,没有析构函数,不可以用abstract和sealed,没有protected修饰符,可以不用new初始化。类是引用类型,可以继承类、接口和被继承,有默认的构造函数,有析构函数,可以使用abstract和sealed,有protected修饰符,必须使用new初始化。线程是CPU调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源。a.地址空间和其它资源:进程间相互独立,同一进程的各线程间共享。栈:由编译器自动分配、释放。
2023-12-29 11:46:08
397
1
原创 .NET C#反射(Reflection)详解
这个接口中包含一个Extension属性,这个属性返回支持的扩展名,另一个方法返回一个解码器的对象(这里我假设了一个Decoder的类,这个类提供把文件流解码的功能,扩展插件可以派生之),通过解码器对象我就可以解释文件流。这样的话,我就不需要在开发播放器的时侯知道将来扩展的格式的类型,只需要从配置文件中获取现在所有解码器的类型名称,而动态的创建媒体格式的对象,将其转换为IMediaFormat接口来使用。答案是可以,这就是反射了,就是在程序运行的时候提供该类型的地址,而去找到它。
2023-12-29 10:50:30
458
1
原创 .NET 单例模式 代码
思考:两个线程同时调用getInstance方法,并且由于singleton是空的,所以两个线程都可以通过第一重的if判断,然后由于锁机制的存在,会有一个线程先进入同步语句,并进入第二重的if判断,而另一个线程就会在外面等待,不过当第一个线程执行完 new Singleton() 语句后,就会退出 synchronized 保护的区域,如果没有第二重singleton == null的话,那么第二个线程也会创建一个实例,这就破坏了单例;类装载的时候就完成了实例化,避免了线程同步的问题;
2023-12-29 10:44:57
456
1
原创 .NET 插入排序
输入一个元素,检查数组列表中的每个元素,将其插入到一个已经排好序的数列中的适当位置,使数列依然有序,当最后一个元素放入合适位置时,该数组排序完毕。
2023-12-29 10:37:05
386
1
原创 .NET 选择排序
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。选择排序是不稳定的。算法复杂度O(n2)–[n的平方]
2023-12-29 10:35:10
409
1
原创 .NET 直接插入排序
直接插入排序是将待比较的数值与它的前一个数值进行比较,所以外层循环是从第二个数值开始的。当前一数值比待比较数值大的情况下继续循环比较,直到找到比待比较数值小的并将待比较数值置入其后一位置,结束该次循环。值得注意的是,我们必需用一个存储空间来保存当前待比较的数值,因为当一趟比较完成时,我们要将待比较数值置入比它小的数值的后一位 插入排序类似玩牌时整理手中纸牌的过程。插入排序的基本方法是:每步将一个待排序的记录按其关键字的大小插到前面已经排序的序列中的适当位置,直到全部记录插入完毕为止。
2023-12-29 10:33:14
377
1
原创 .NET 冒泡排序算法
冒泡排序 作为一种渐进复杂度O(N^2)的排序方法, 实质上属于一种形式“玄妙的”选择排序,只是相比选择排序多了一些无意义的交换。它比选择排序更难于理解和解释(就在于它多次无意义的交换的干扰,不信你讲给楼下阿姨比较下),又不具有插入排序的“在线”优点,跟极易理解的基数排序更不能在思维难度上相比,就算同快排,归并相比,也具有复杂度高得多的劣势。那么为什么冒泡排序会作为经典,成为初学者学习语言的遇到的首个算法?
2023-12-29 10:31:49
633
1
原创 Zookeeper 介绍
一旦有机器挂掉,该机器与 zookeeper的连接断开,其所创建的临时目录节点被删除,所有其他机器都收到通知:某个兄弟目录被删除,于是,所有人都知道了。Zookeeper 作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储, Zookeeper 作用主要是用来维护和监控存储的数据的状态变化,通过监控这些数据状态的变化,从而达到基于数据的集群管理。这个似乎最简单,在zookeeper的文件系统里创建一个目录,即有唯一的path。
2023-12-29 10:27:52
393
1
原创 Kafka 介绍
副本还分为领导者副本和追随者副本,各自有不同的角色划分。副本是在分区层级下的,即每个分区可配置多个副本实现高可用。企业利用这组规范在不同系统之间传递语义准确的消息,实现松耦合的异步式数据传递。消费者组内某个消费者实例挂掉后,其他消费者实例自动重新分配订阅主题分区的过程。表征消费者消费进度,每个消费者都有自己的消费者位移。Kafka 是消息引擎嘛,这里的消息就是指 Kafka 处理的主要对象。表示分区中每条消息的位置信息,是一个单调递增且不变的值。主题是承载消息的逻辑容器,在实际使用中多用来区分具体的业务。
2023-12-29 10:25:12
392
1
原创 MySQL 常用技能
详细描述下这个SQL语句的逻辑:联合索引是先以Tag排序,再按Time排序(联合索引是绑定主键的),当我们先获取Tag=film-and-television-works 和Tag=happy-moments 的数据后,后面的Time 的顺序是乱的,无法直接找到Time=‘2023-12-18’。不管是走索引还是不走索引,都会进行全排序后,再提取制定位置的10行数据,把剩下的数据丢弃,这样数据小会在内存里排序,数据大就会在磁盘上排序,效率低下。Using index,用时:0.017s,速度慢不少。
2023-12-28 21:48:47
605
转载 ASP.NET FCKeditor 集成
一、集成方法 FCKeditor应用在ASP.NET上,需要两组文件,一组是FCKeditor本身,另一个是用于ASP.NET的FCKeditor控件(分为1.1和2.0两个版本,这里使用2.0版本)。 1. 将FCKeditor加入到项目中 解压FCKeditor编辑器,得到文件夹fckeditor,复制此文件夹到Web应用的项目下(也可以是子孙目录下)。 解压FCKed
2009-06-23 15:43:00
1224
转载 百度收录新网站方法
新建的博客,论坛等网站如何可以让百度快速收录呢?网站收录对于那些新入门的站长来说就有些困难了。没有有经验的网站前辈来带,没有足够强劲的链接,想让各大搜索引擎立刻收录你的小站谈何容易呀!呵呵,万事开头难,世事似乎并非如此,但是想让百度收录你的新站却是相当容易的。下面的保德电脑城来告诉你吧: 一、网站域名。网站的域名一定要和网站主题相符,这样可以利用百度对你站的信誉评价。 二、百度
2009-06-09 17:19:00
1003
原创 Spring 简单介绍 Spring 注入
1.Spring 是什么Spring 是一个开源的控制反转的(IoC) 和面向切面的(AOP) 的容器框架。它主要目的是简化企业开发。控制反转: 所谓控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓的反转。依赖注入: 所谓依赖注入就是 在运行期,由外部容器动态地将依赖对象注入到组件中。2.使
2009-05-08 23:04:00
2607
原创 spring2.5 注解
一. spring注解1.准备工作(1)导入common-annotations.jar(2)导入schema文件 文件名为spring-context-2.5.xsd(3)在xml的beans节点中配置 ....... xmlns:context="http://www.springframework.org/schema/context" xsi:
2009-05-08 22:49:00
2223
原创 SSH 手动搭建Spring2.5+Strut1.3+Hibernate3.5
一. SSH 所应用到的包文件 ssh搭建完成项目url=http://d.download.youkuaiyun.com/down/1287448/eluyouniSpring2.5中的包 spring.jarspring-webmvc-struts.jarcommons-pool.jarcommons-logging.jarcommons-dbcp.jarcommon-
2009-05-08 22:14:00
3181
2
原创 java反射机制
详细实例下载:http://d.download.youkuaiyun.com/down/656222/eluyouni一 反射的概念 : (1) JAVA 反射机制(Java Reflection) 是Java 被视为动态(或准动态)语言的一个关键性质。 这个机制允许程序在执行期透过Reflection API 取得任何一个已知名称的class 的内部资讯,
2008-09-28 20:59:00
1088
原创 Jndi数据连接池
完整实例工程下载:http://d.download.youkuaiyun.com/down/650651/eluyouni一 首先配置Tomcat服务器文件 1. 在Tomcat安装目录下找到lib文件夹 将sql2000 驱动夹包和sql2005的驱动夹包复制到lib文件夹里 2. 在Tomcat安装目录下找到conf文件夹,并打开context.xml文件 配置如下
2008-09-25 23:00:00
884
原创 Log4j日志
一 简单实例在 http://d.download.youkuaiyun.com/down/641303/eluyouni 下载 二 1 Log4j简介 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务 器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制
2008-09-22 09:18:00
1025
1
React开发实战
2018-10-25
数据挖掘导论 完整版.pdf
2015-11-02
J2EE项目实例.rar
2015-10-14
SSH 手动搭建Spring2.5+Strut1.3+Hibernate3.5
2009-05-08
JavaAPI.rar
2008-09-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人