Linux内核LCD驱动某些寄存器值无法修改

为了熟悉总线驱动,便自己写内核LCD驱动,板子是4412的开发板,make menuconfig里面裁剪LCD驱动后会报很多错误所以在drivers/video下面注释掉LCD相关的驱动。注释过后重新编译kernel。dev下面已经没有fb了。

现在只是测试内核LCD显示,寄存器配置用的跟裸板一样的配置步骤,裸板上面已经测试过了,能够正常显示图片。证明寄存器的,所以寄存器配置步骤应该是没有问题的。

现在出现的问题就是,按照裸板上的配置步骤,让开发板在Linux内核模块程序中配置寄存器,insmod能够成功添加模块,但printk打印来看,某些寄存器(LCD寄存器)能够修改,某些寄存器不能修改,修改的方法是一样的。所以应该不是修改方法的问题。我看了一下/proc/iomem文件,不能修改的那段寄存器地址已经被注册了,不知道是不是这个原因导致我无法修改。

搞了几天了,个人无法解决,跪求方法 Orz

3个回答

这是/proc/iomem 文件里面LCD寄存器注册的那一部分

11a30000-11a30fff : s5p-sysmmu.2
11a30000-11a30fff : s5p-sysmmu.2
11a40000-11a40fff : s5p-sysmmu.3
11a40000-11a40fff : s5p-sysmmu.3
11a50000-11a50fff : s5p-sysmmu.4
11a50000-11a50fff : s5p-sysmmu.4
11a60000-11a60fff : s5p-sysmmu.5
11a60000-11a60fff : s5p-sysmmu.5

            11c00000-11c07fff : s3cfb.0

12000000-1225ffff : exynos4-fimc-is
12000000-1225ffff : exynos4-fimc-is
12260000-12260fff : s5p-sysmmu.16
12260000-12260fff : s5p-sysmmu.16
12270000-12270fff : s5p-sysmmu.17
12270000-12270fff : s5p-sysmmu.17
122a0000-122a0fff : s5p-sysmmu.18

不是所有的bit能改 

这个问题解决了么,我现在也碰到了这个问题

u010147522
Fezl 不好意思,朋友,并没有解决。估计是代码没有注释干净,好像是改了寄存器的值,但是立马又被其它程序改回来一样
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Linux内核SATA驱动部分代码疑问

我是一名ssd firmware开发人员,在查看linux SATA驱动代码时,下面的代码中,第152行到155行的代码看起来很容易死循环,由于我对linux内核代码不熟悉,而且linux很稳定,我不是很确定这部分代码是否有问题,还请熟悉linux内核的同学帮我看一下这个代码有没有问题,贴出的代码来自linux kernel 4.20.2,文件路径是\driver\ata\sata_dwc_460ex.c, 507行 ``` static irqreturn_t sata_dwc_isr(int irq, void *dev_instance) { struct ata_host *host = (struct ata_host *)dev_instance; struct sata_dwc_device *hsdev = HSDEV_FROM_HOST(host); struct ata_port *ap; struct ata_queued_cmd *qc; unsigned long flags; u8 status, tag; int handled, num_processed, port = 0; uint intpr, sactive, sactive2, tag_mask; struct sata_dwc_device_port *hsdevp; hsdev->sactive_issued = 0; spin_lock_irqsave(&host->lock, flags); /* Read the interrupt register */ intpr = sata_dwc_readl(&hsdev->sata_dwc_regs->intpr); ap = host->ports[port]; hsdevp = HSDEVP_FROM_AP(ap); dev_dbg(ap->dev, "%s intpr=0x%08x active_tag=%d\n", __func__, intpr, ap->link.active_tag); /* Check for error interrupt */ if (intpr & SATA_DWC_INTPR_ERR) { sata_dwc_error_intr(ap, hsdev, intpr); handled = 1; goto DONE; } /* Check for DMA SETUP FIS (FP DMA) interrupt */ if (intpr & SATA_DWC_INTPR_NEWFP) { clear_interrupt_bit(hsdev, SATA_DWC_INTPR_NEWFP); tag = (u8)(sata_dwc_readl(&hsdev->sata_dwc_regs->fptagr)); dev_dbg(ap->dev, "%s: NEWFP tag=%d\n", __func__, tag); if (hsdevp->cmd_issued[tag] != SATA_DWC_CMD_ISSUED_PEND) dev_warn(ap->dev, "CMD tag=%d not pending?\n", tag); hsdev->sactive_issued |= qcmd_tag_to_mask(tag); qc = ata_qc_from_tag(ap, tag); /* * Start FP DMA for NCQ command. At this point the tag is the * active tag. It is the tag that matches the command about to * be completed. */ qc->ap->link.active_tag = tag; sata_dwc_bmdma_start_by_tag(qc, tag); handled = 1; goto DONE; } sata_dwc_scr_read(&ap->link, SCR_ACTIVE, &sactive); tag_mask = (hsdev->sactive_issued | sactive) ^ sactive; /* If no sactive issued and tag_mask is zero then this is not NCQ */ if (hsdev->sactive_issued == 0 && tag_mask == 0) { if (ap->link.active_tag == ATA_TAG_POISON) tag = 0; else tag = ap->link.active_tag; qc = ata_qc_from_tag(ap, tag); /* DEV interrupt w/ no active qc? */ if (unlikely(!qc || (qc->tf.flags & ATA_TFLAG_POLLING))) { dev_err(ap->dev, "%s interrupt with no active qc qc=%p\n", __func__, qc); ap->ops->sff_check_status(ap); handled = 1; goto DONE; } status = ap->ops->sff_check_status(ap); qc->ap->link.active_tag = tag; hsdevp->cmd_issued[tag] = SATA_DWC_CMD_ISSUED_NOT; if (status & ATA_ERR) { dev_dbg(ap->dev, "interrupt ATA_ERR (0x%x)\n", status); sata_dwc_qc_complete(ap, qc, 1); handled = 1; goto DONE; } dev_dbg(ap->dev, "%s non-NCQ cmd interrupt, protocol: %s\n", __func__, get_prot_descript(qc->tf.protocol)); DRVSTILLBUSY: if (ata_is_dma(qc->tf.protocol)) { /* * Each DMA transaction produces 2 interrupts. The DMAC * transfer complete interrupt and the SATA controller * operation done interrupt. The command should be * completed only after both interrupts are seen. */ hsdevp->dma_interrupt_count++; if (hsdevp->dma_pending[tag] == \ SATA_DWC_DMA_PENDING_NONE) { dev_err(ap->dev, "%s: DMA not pending intpr=0x%08x status=0x%08x pending=%d\n", __func__, intpr, status, hsdevp->dma_pending[tag]); } if ((hsdevp->dma_interrupt_count % 2) == 0) sata_dwc_dma_xfer_complete(ap, 1); } else if (ata_is_pio(qc->tf.protocol)) { ata_sff_hsm_move(ap, qc, status, 0); handled = 1; goto DONE; } else { if (unlikely(sata_dwc_qc_complete(ap, qc, 1))) goto DRVSTILLBUSY; } handled = 1; goto DONE; } /* * This is a NCQ command. At this point we need to figure out for which * tags we have gotten a completion interrupt. One interrupt may serve * as completion for more than one operation when commands are queued * (NCQ). We need to process each completed command. */ /* process completed commands */ sata_dwc_scr_read(&ap->link, SCR_ACTIVE, &sactive); tag_mask = (hsdev->sactive_issued | sactive) ^ sactive; if (sactive != 0 || hsdev->sactive_issued > 1 || tag_mask > 1) { dev_dbg(ap->dev, "%s NCQ:sactive=0x%08x sactive_issued=0x%08x tag_mask=0x%08x\n", __func__, sactive, hsdev->sactive_issued, tag_mask); } if ((tag_mask | hsdev->sactive_issued) != hsdev->sactive_issued) { dev_warn(ap->dev, "Bad tag mask? sactive=0x%08x sactive_issued=0x%08x tag_mask=0x%08x\n", sactive, hsdev->sactive_issued, tag_mask); } /* read just to clear ... not bad if currently still busy */ status = ap->ops->sff_check_status(ap); dev_dbg(ap->dev, "%s ATA status register=0x%x\n", __func__, status); tag = 0; num_processed = 0; while (tag_mask) { num_processed++; while (!(tag_mask & 0x00000001)) { tag++; tag_mask <<= 1; } tag_mask &= (~0x00000001); qc = ata_qc_from_tag(ap, tag); /* To be picked up by completion functions */ qc->ap->link.active_tag = tag; hsdevp->cmd_issued[tag] = SATA_DWC_CMD_ISSUED_NOT; /* Let libata/scsi layers handle error */ if (status & ATA_ERR) { dev_dbg(ap->dev, "%s ATA_ERR (0x%x)\n", __func__, status); sata_dwc_qc_complete(ap, qc, 1); handled = 1; goto DONE; } /* Process completed command */ dev_dbg(ap->dev, "%s NCQ command, protocol: %s\n", __func__, get_prot_descript(qc->tf.protocol)); if (ata_is_dma(qc->tf.protocol)) { hsdevp->dma_interrupt_count++; if (hsdevp->dma_pending[tag] == \ SATA_DWC_DMA_PENDING_NONE) dev_warn(ap->dev, "%s: DMA not pending?\n", __func__); if ((hsdevp->dma_interrupt_count % 2) == 0) sata_dwc_dma_xfer_complete(ap, 1); } else { if (unlikely(sata_dwc_qc_complete(ap, qc, 1))) goto STILLBUSY; } continue; STILLBUSY: ap->stats.idle_irq++; dev_warn(ap->dev, "STILL BUSY IRQ ata%d: irq trap\n", ap->print_id); } /* while tag_mask */ /* * Check to see if any commands completed while we were processing our * initial set of completed commands (read status clears interrupts, * so we might miss a completed command interrupt if one came in while * we were processing --we read status as part of processing a completed * command). */ sata_dwc_scr_read(&ap->link, SCR_ACTIVE, &sactive2); if (sactive2 != sactive) { dev_dbg(ap->dev, "More completed - sactive=0x%x sactive2=0x%x\n", sactive, sactive2); } handled = 1; DONE: spin_unlock_irqrestore(&host->lock, flags); return IRQ_RETVAL(handled); } ``` @天麓

linux内核驱动模块ko加载时如何绕过CRC校验的问题。

基于种种原因,本人编写了一个驱动ko文件,想在天机II的系统上insmod,由于没有天机II的源码,故而我只能在nubia的内核源码树中编译ko文件,所以编译出来的ko文件在天机上面加载存在CRC校验的问题(内核源码版本不匹配?)。 现在模块加载时的ver_magic问题已经绕过,算是解决了,但是由于模块中还要用到不少内核导出函数,有些函数的CRC校验值可以在其他ko模块中找到,但也有很多找不到,所以加载不起来,很是头疼,现在该如何是好,有没有大神给予下指导。。。

我要如何单独编译这个linux-sunxi内核的驱动模块

![图片说明](https://img-ask.csdn.net/upload/201601/21/1453389436_249473.png) 编译后它说找不到那个文件 但是这个源码是它本身自带的led驱动 它原生得makefile是把全部内核编译在一起的 我只是改了makefile就变成这样了 我要怎么做才能单独的调试它啊 我必须要在这个文件夹下 因为我的板子烧得就是这个内核的 这是我修改的makefile obj-m := leds-sunxi.o #要生成的模块名 modules-objs:= leds-sunxi.o #生成这个模块名所需要的目标文件 KDIR := /lib/modules/`uname -r`/build PWD := $(shell pwd) default: make -C $(KDIR) M=$(PWD) modules clean: rm -rf *.o .* .cmd *.ko *.mod.c .tmp_versions

LINUX内核usb驱动,如何知道数据正在USB接口上传输(包括读写)?

开始数据传输必调用的内核函数是哪个? 数据传输结束必调用的内核函数是哪个? 另外我想在开始和结束的时候做标记,吐一个信息到/tmp/dataTransferSymbol; 或者吐到系统日志也行,设备运行过程中使用dmesg能看到数据传输标志,怎么实现呢? 请高手赐教。谢谢。

linux内核模块调用内核中的函数

我编写了一个简单的内核模块,想验证一下内核workqueue的功能。 如下: ``` #include <linux/module.h> #include <linux/init.h> #include <linux/workqueue.h> #include <linux/sched.h> #include <linux/nsproxy.h> //static struct workqueue_struct *queue=NULL; //extern int copy_namespaces(unsigned long flags, struct task_struct *tsk); static struct work_struct work; static void work_handler(struct work_struct *data) { struct task_struct *base_task = find_task_by_vpid(18572); printk(KERN_ALERT"work handler function.\n"); printk(KERN_ALERT"current--------> %d.\n", current->pid); //copy_namespaces(CLONE_NEWUTS, current); get_nsproxy(base_task->nsproxy); switch_task_namespaces(current, base_task->nsproxy); } static int __init test_init(void) { //queue=system_unbound_wq //create_singlethread_workqueue("hello world");/*创建一个单线程的工作队列*/ //if (!queue) // goto err; INIT_WORK(&work,work_handler); queue_work(system_unbound_wq, &work); return 0; } static void __exit test_exit(void) { //destroy_workqueue(queue); printk(KERN_ALERT "caoshufeng module exit"); } MODULE_LICENSE("GPL"); module_init(test_init); module_exit(test_exit); ``` 这是makefile: obj-m += queue.o all: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules clean: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean 模块make成功,但是无法insomd dmesg中有如下错误: [ 9806.426471] queue: Unknown symbol switch_task_namespaces (err 0) [ 9806.426554] queue: Unknown symbol find_task_by_vpid (err 0) 我已经include了相应的头文件,为啥还是找不到symbol呢?

linux 内核 spi驱动出错

请教,我在linux下(2.6.32)进行gpio模拟spi操作,但是当我调用spi_register_board_info 函数的时候,代码死机了,其具体情况如下: static struct spi_board_info stm32_board_info = { .modalias = "stm32-spi", .max_speed_hz = 10000000, .bus_num = 1, .mode = SPI_MODE_0, }; ret = spi_register_board_info(&stm32_board_info, 1); 死机了: do_cpu invoked from kernel context![#1]: Cpu 0 $ 0 : 00000000 004fdbd6 0000001f 00000001 $ 4 : 81c97c84 00000001 ffffffff 80126830 $ 8 : 3a207061 72616c6c 00000000 7271210a $12 : 7fa41760 00103044 2a60d837 00000000 $16 : 826e02c0 81fa1e08 826e0000 7fa417f0 $20 : 81fa1e08 0049a688 004e9d90 004fdb68 $24 : 00000000 80125f34 $28 : 81fa0000 81fa1930 004fdbc6 81c82684 Hi : 00000000 Lo : 17b44000 epc : 801df82c spi_register_board_info+0x4/0xa0 // 该接口挂了 Tainted: P ra : 81c82684 para_init+0x30/0xd8 [umac] Status: 1000ff03 KERNEL EXL IE Cause : 9080002c PrId : 00019374 (MIPS 24Kc) Modules linked in: wvas_wloc wbs_sec aclk rg_data_plane efqos_kernel roamk rg_wvlan proc_info ar93xx_et eth_subif umac ath_dev(P) ath_rate_atheros(P) ath_hal asf(P) adf(P) wbs_fwd_intf capwap_kernel rg_wlibk wbuf wbs_mng ef_bridge_ko af_packet ipv4 ref_ip eth_parser srvk net2con fpm_k ref_frame lsm_ko wbs_dev dm_chardev env_utils setmac_utils product_info_utils get_envi mtdoops rg_console rg_sysfs rg_thread_det rg_lowmem_killer rg_dprintk Process wbs_mng.elf (pid: 603, threadinfo=81fa0000, task=82a64038, tls=2aab7770) Stack : 00000009 81c8c89c 00000000 00000010 826e02c0 81c81094 81fa1a88 81fa1b70 00000006 00000000 00000001 00000000 00000005 00000001 81fa1e08 81c4bd1c 00000000 00000042 004fdbc6 00000010 00000000 00000000 81fa1b2c 00000000 00000000 00000001 81fa1a50 81fa1a5c 81fa1a50 00000003 00000000 00000000 00060000 8089c000 00000000 00060001 000000ff 00000000 00060000 004e0000 ... Call Trace: [<801df82c>] spi_register_board_info+0x4/0xa0 [<81c82684>] para_init+0x30/0xd8 [umac] [<81c81094>] rj_ath_wloc_set_tcl_cb+0x12c/0x14c [umac] [<81c4bd1c>] ath_ioctl+0x1b8/0x82c [umac] [<80160688>] dev_ioctl+0x664/0x71c [<80089920>] vfs_ioctl+0x2c/0x70 [<8008a008>] do_vfs_ioctl+0x5a0/0x5f8 [<8008a0a8>] sys_ioctl+0x48/0x7c [<80004124>] stack_done+0x20/0x3c Code: 000003f1 0001678c 00000004 <1100000d> 00000001 00016620 00000000 1100fff1 000004d2 Fatal exception: panic in 5 seconds Kernel panic - not syncing: Fatal exception Call Trace: [<800074bc>] dump_stack+0x8/0x34 [<80007550>] panic+0x68/0x13c [<8000f8d8>] die+0xc8/0xd0 [<8000fa24>] do_cpu+0x38/0x268 [<80002400>] ret_from_exception+0x0/0xc [<801df82c>] spi_register_board_info+0x4/0xa0 [<81c82684>] para_init+0x30/0xd8 [umac] [<81c81094>] rj_ath_wloc_set_tcl_cb+0x12c/0x14c [umac] [<81c4bd1c>] ath_ioctl+0x1b8/0x82c [umac] [<80160688>] dev_ioctl+0x664/0x71c [<80089920>] vfs_ioctl+0x2c/0x70 [<8008a008>] do_vfs_ioctl+0x5a0/0x5f8 [<8008a0a8>] sys_ioctl+0x48/0x7c [<80004124>] stack_done+0x20/0x3c 自身没感觉到调用的时候产生了啥错误,请帮忙指点下;

关于linux内核线程的使用

linux虚拟机中启动一个内核线程,在线程中打印以下信息: - 执行系统调用的进程的ID号 - 分行打印系统中所有内核线程的信息:线程ID、父进程ID、运行状态、名称、用户ID。 每一行打印一个内核线程的信息。 要求在上面,新学的只会创建和结束内核线程,但是具体怎么实现打印这些信息不会。 请教前辈们,如何去实现这个打印的功能,拜求。

linux内核 进程地址空间

大神: 我是一个Linux内核菜鸟,在<<深入linux内核架构>>一书中写道:“各个进程的地址空间都是独立的”, ,大神, 我不理解进程的"地址空间"是什么, 是进程的内存吗,请赐教,不胜感激涕零。

SATA控制器驱动???

问题是这样的,我最近在开发一个SATA控制的驱动,这个SATA控制器是在Xilinx zynq处理器上用FPGA实现的。SATA的驱动主要是实现STRUCT ATA_PORT_OPERATIONS里的API,我发现内核中SATA控制器的代码都只实现了部分的API,我的问题是: 1、如果ATA_PORT_OPERATIONS中的API只需要实现一部分,那我应该怎么选择?

在linux内核源码中添加用户自定义的函数

本人刚接触linux不久,想在linux内核中加入自己定义的is_accepted_sd()函数。我在sd_ops().h头文件中声明了自定义的函数,并在sd_ops.c源文件中定义和实现。然后在sd.c源文件中的mmc_sd_init_card()函数中调用了这个自定义的函数。(PS:sd.c中有sd_ops.h这个头文件) 然后我进行编译,结果编译报错。错误如下所示: drivers/built-in.o: In function `mmc_sd_init_card': /opt/FriendlyARM/tiny210/android/linux-2.6.35.7/drivers/mmc/core/sd.c:379: undefined reference to `is_accepted_sd' make: *** [.tmp_vmlinux1] Error 1 真心求各位大神不吝赐教啊~~我把仅剩的2个C币都贡献出去了。

linux内核模块N多文件Makefile写法

现在有一个大型的用户层驱动程序(目标文件是一个.o) 要移植到内核层,以模块的形式加载。那么问题来了,如此多的源文件还是必须按照内核模块Makefile那样: obj-m: mode.o mode.o-y: a.o b.o c.o d.o ..... 这种方式吗?那不是整个驱动的代码结构都要重构?所有的源文件里的头文件目录也有重写?这不科学啊。。。。肯定还有其它的办法对不对?!虽对内核模块有一定的了解但实际干的事很少,所以在此向大神们虚心请教!

linux内核模块依赖问题

最近修改内核源码,发现模块A的编译过程中,模块A需要依赖模块B和模块C 在编译模块时,A.mod.o的文件中也明确有这一条 depends=bb,cc,dd 那么请问,**在编译过程中**,是在那个地方记录了这个依赖关系?

关于linux内核的驱动程序

类似于wm8960这种的内核提供驱动源码的,如何能得到单独的.ko驱动文件呢?

关于Linux内核看门狗的疑问

在内核源码中,Linux内核看门狗线程的调度策略是SCHED_FIFO,而我自己的内核模块中调度策略默认为SCHED_NORMAL,按理说FIFO比NORMAL的优先级要高,可为什么我自己模块中的死循环还是让看门狗饿死了,求解释。

Linux内核可以访问数据库么?

是这样的:我对每个新建的文件,调用sys_open时,在内核中同时给该文件在数据库中建立一个对应的表。 ,比如a.txt 文件给其建立一个一个aa表,然后我给a.txt文件存储写数据的时候,对这些数据进行一个切分 ,将这些切分的数据作为aa表的字段,进行插入操作。 我的问题是:内核可以这样做么?内核可以直接操作数据库么?接口是什么?比如mysal数据库,或者还是内核不能直接访问数据库,那需要做什么才可以让内核访问数据库呢?

Linux如何管理内核的数据段?

我目前知道的或自以为知道的(以32位Linux、3G+1G的配置为例): 1. Linux里的每个进程都有4G的地址空间,其中0至3G是用户空间,3G至4G是内核。内核被共享在每个进程的地址空间中。 2. 每个进程的地址空间内大约有4个段,即内核代码段、内核数据段、用户代码段、用户数据段。 3. 我以为属于内核的物理内存,是不能被交换(swap)到硬盘上的,也就是常驻在内存中的。 但是我现在在看一篇文献,上面大约这样说: ...上面提到的那种设计不好(注:具体这个设计是什么就不讨论了),因为物理内存页会频繁地在属于kernel data segment和属于user space之间切换。而属于kernel code segment的物理内存页则没有这个问题。 这好像和我之前理解的不符啊?求高手解惑:kernel data segment的物理页如何变成user space的物理页?以及user space的物理页如何变成kernel data segment的物理页?

linux内核态程序并行执行

如题,内核态程序能并行执行吗?比如同时写多个io或者socket? 它是怎样工作的 相关的博文推荐下呗? 谢谢!!!

为什么tcp/ip协议被写在了Linux内核里面,或者说有什么好处

为什么tcp/ip协议被写在了Linux内核里面,或者说有什么好处,求高手专业性 的解答,谢谢

关于Linux内核简单编写问题

在添加最简单的Linux内核模块时,编译kello.c,代码如下: #include <linux/module.h> // for printk() int kello_init( void ) { printk( "\n Hello, students from SDUST! This is in kernel space! \n" ); return 0; } void kello_exit( void ) { printk( "\n Goodbye now... students from SDUST! \n" ); } MODULE_AUTHOR("SDUSTOS <fangs99@126.com>"); MODULE_LICENSE("GPL"); module_init(kello_init); module_exit(kello_exit); 在int kello_init()中为什么一定要return 0?

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

Intellij IDEA 实用插件安利

1. 前言从2020 年 JVM 生态报告解读 可以看出Intellij IDEA 目前已经稳坐 Java IDE 头把交椅。而且统计得出付费用户已经超过了八成(国外统计)。IDEA 的...

搜狗输入法也在挑战国人的智商!

故事总是一个接着一个到来...上周写完《鲁大师已经彻底沦为一款垃圾流氓软件!》这篇文章之后,鲁大师的市场工作人员就找到了我,希望把这篇文章删除掉。经过一番沟通我先把这篇文章从公号中删除了...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

魂迁光刻,梦绕芯片,中芯国际终获ASML大型光刻机

据羊城晚报报道,近日中芯国际从荷兰进口的一台大型光刻机,顺利通过深圳出口加工区场站两道闸口进入厂区,中芯国际发表公告称该光刻机并非此前盛传的EUV光刻机,主要用于企业复工复产后的生产线扩容。 我们知道EUV主要用于7nm及以下制程的芯片制造,光刻机作为集成电路制造中最关键的设备,对芯片制作工艺有着决定性的影响,被誉为“超精密制造技术皇冠上的明珠”,根据之前中芯国际的公报,目...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

百度工程师,获利10万,判刑3年!

所有一夜暴富的方法都写在刑法中,但总有人心存侥幸。这些年互联网犯罪高发,一些工程师高技术犯罪更是引发关注。这两天,一个百度运维工程师的案例传遍朋友圈。1...

程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《Oracle Java SE编程自学与面试指南》最佳学习路线图2020年最新版(进大厂必备)

正确选择比瞎努力更重要!

字节跳动面试官竟然问了我JDBC?

轻松等回家通知

面试官:你连SSO都不懂,就别来面试了

大厂竟然要考我SSO,卧槽。

实时更新:计算机编程语言排行榜—TIOBE世界编程语言排行榜(2020年6月份最新版)

内容导航: 1、TIOBE排行榜 2、总榜(2020年6月份) 3、本月前三名 3.1、C 3.2、Java 3.3、Python 4、学习路线图 5、参考地址 1、TIOBE排行榜 TIOBE排行榜是根据全世界互联网上有经验的程序员、课程和第三方厂商的数量,并使用搜索引擎(如Google、Bing、Yahoo!)以及Wikipedia、Amazon、YouTube统计出排名数据。

立即提问
相关内容推荐