Eu diria que, tal como noutras áreas, é 20% de inspiração e 80% de transpiração [Uma pessoa com um raciocínio lógico normal consegue fazer coisas interessantes em programação ou o factor "jeito inato" tem uma importância demasiado grande?
Eu diria que, tal como noutras áreas, é 20% de inspiração e 80% de transpiração [Uma pessoa com um raciocínio lógico normal consegue fazer coisas interessantes em programação ou o factor "jeito inato" tem uma importância demasiado grande?
Uma pessoa com um raciocínio lógico normal consegue fazer coisas interessantes em programação ou o factor "jeito inato" tem uma importância demasiado grande?
Eu diria que, tal como noutras áreas, é 20% de inspiração e 80% de transpiração []
Uma pessoa com um raciocínio lógico normal consegue fazer coisas interessantes em programação ou o factor "jeito inato" tem uma importância demasiado grande?
Basicamente:
Ou se gosta, ou não se gosta.
Quem não gostar o melhor é não insistir e ir fazer outra coisa.
Quem gosta supera facilmente a maioria das dificuldades, porque normalmente
estão numa demanda constate por saber mais e fazer melhor.
Seja como for:
Teach Yourself Programming in Ten Years
Para poder dar uma resposta melhor, precisaria de saber exactamente qual é a
tua dúvida. Curso a escolher? Carreira?
Que já sabes tu de programação? Que já fizeste?
Nao há jeito inato. Tens que saber como é que as coisa se integram, nao há grande volta a dar.
Sou aluno de eng de telecomunicações e informática , já fiz algumas cadeiras de programação ( indrodução à programação, algoritmos e estrutura de dados, arquitectura de computadores) e estou a descobrir as maravilhas da programação aplicadas ao lixux.
É um curso com uma boa carga de código e como há a possibilidade de ter de ir para esta área quando acabar e como estou numa de ficar competente na área da informática- não apenas na optica do utilizador- estou a perguntar isto.
Atinei bem com as funções mas quando entrei nos objectos a coisa ficou mais lenta embora já esteja a entrar no ritmo. Mas quando digo entrar no ritmo refiro-me a compreender os conceitos não parte mais importante , ou seja desenhar uma solução e traduzi-la para a linguagem que uso ( Java e C na maioria dos casos).

Mais uma vez me dirijo a vocês para ver se me podem ajudar numa questão que tenho.
Neste momento estou a fazer um projecto que implica controlo de concorrência, é nesta parte que estou com um "problema".
Tenho um método onde é feito o registo de utilizadores (são guardados num Hashmap), este método só pode ser acedido por uma thread, é aqui que entra o controlo de concorrência.
O método é este:
View attachment 119456
onde aquele "rl" é um reentrantlock, a minha dúvida é como hei-de testar se o controlo estará a ser feito devidamente pois não consigo colocar 2 ou mais clientes a fazer o registo no mesmo instante.
Não sei se me fiz entender bem[]:sh)
A lógica que estou a tentar fazer é, a thread entra no método e "obtém" o lock ficando assim com a exclusividade de estar no método.
Entretanto caso cheguem outras threads ficam em espera até que a primeira thread faça o "unlock".
A lógica está correta?
Mais uma vez me dirijo a vocês para ver se me podem ajudar numa questão que tenho.
Neste momento estou a fazer um projecto que implica controlo de concorrência, é nesta parte que estou com um "problema".
Tenho um método onde é feito o registo de utilizadores (são guardados num Hashmap), este método só pode ser acedido por uma thread, é aqui que entra o controlo de concorrência.
O método é este:
View attachment 119456
onde aquele "rl" é um reentrantlock, a minha dúvida é como hei-de testar se o controlo estará a ser feito devidamente pois não consigo colocar 2 ou mais clientes a fazer o registo no mesmo instante.
Não sei se me fiz entender bem[]:sh)
Crias dois clientes e metes a tentativa de registo a ser efectuada em loop.
Li só na diagonal mas se queres fazer um teste local para fins académicos (aka bazarouco) coloca um wait de 5min antes do unlock... assim tens uma janela de 5min para tentares registar mais users noutro processo, se funcionar ninguém deverá conseguir.
Isto é só para satisfazer a curiosidade.
Pensando bem, tens razão:sh) (embora isto irá ter pouquinhos utilizadores, é meramente académico).Se isso é para a universidade, e se eu fosse o teu prof., levavas um desconto na nota
que até ficavas a ver navios.
Já viste bem o tempo que o lock fica activo?
Imagina que a tua lista tinha milhões de utilizadores (tipo FB).
Que dica me dás para melhorar o desempenho disto?
Obrigado, vou experimentar isso.
Pensando bem, tens razão:sh) (embora isto irá ter pouquinhos utilizadores, é meramente académico).
Que dica me dás para melhorar o desempenho disto?
Dica para melhorar o desempenho?
Deixa de usar o "id" e passa a usar uma coisa tipo GUID ou UUID ou não o explicites tu e deixa a BD tratar disso.
Não faças pesquisa linear, no mínimo usa uma pesquisa binária, ou se quiseres brilhar, metes aquilo numa árvore.
Dica para melhorar o desempenho?
Deixa de usar o "id" e passa a usar uma coisa tipo GUID ou UUID ou não o explicites tu e deixa a BD tratar disso.
Não faças pesquisa linear, no mínimo usa uma pesquisa binária, ou se quiseres brilhar, metes aquilo numa árvore.
Só conhecendo o problema que te foi colocado.
Ou seja, pode muito bem ser que todo o algoritmo possa ser diferente.
Por exemplo, a utilização de um SET não me parece de forma alguma a
estrutura mais apropriada para essa situação.
Decidi utilizar o ID porque foi a forma que encontrei mais rapidamente para resolver aquele problema, nunca tinha trabalhado com hashmaps.Ou então usa as estruturas da framework que já fazem isso tudo.
[]
EDIT:
Aliás, aquilo até está a retornar um HASHMAP, pelo que já lá está tudo o
que é necessário. A cena do SET é que deverá ser perfeitamente dispensável
(e do ID).
Obrigado aos dois pela resposta, o objetivo do projeto é trabalhar o controlo de concorrência, este é o maior foco na avaliação.
Até tinha pensado em fazer o registo dos users numa BD mysql ou assim, mas como esta questão não é valorizada acabei por escolher hashmap.
Decidi utilizar o ID porque foi a forma que encontrei mais rapidamente para resolver aquele problema, nunca tinha trabalhado com hashmaps.
É nestes momentos que vemos que ainda temos muito, muito para a aprender.
Quando falas nas estruturas da framework o que queres mesmo dizer? Consegues trocar isso por miúdos?
Já entendi a parte da framework.HASHMAP, por exemplo.
Não faz parte da linguagem, faz parte da framework.
A linguagem só tem o "int", "double", "boolean", etc.
Primitive Data Types (The Java™ Tutorials > Learning the Java Language > Language Basics)
Java Collections Framework Tutorial
Quanto ao trabalho...
Sim, que o objectivo é o controlo da concorrência já tinha dado para perceber.
Mas o que é que foi pedido?
- Uma função para adicionar um login?
- Uma aplicação para gerir utilizadores?
Ou seja, se permitem que se usem bases de dados, então quem gere a concorrência
será o motor da BD, usando transacções. Terias de garantir na BD que os locks nos
registos eram colocados, que não tinhas deadlocks, e que não eram inseridos registos
duplicados (através da utilização de índice único).
Acho é estranho que isso seja em JAVA... normalmente os problemas são bem concretos,
e a implementação é em C em ambiente UNIX/Linux, e sem nada de bases de dados.